# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-08-07
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
from 神笔码靓.神笔库.元素库 import 元素模板
from 神笔码靓.神笔库.神笔绘图板 import 神笔绘图板
from 神笔码靓.神笔库.定义集 import *
from 神笔码靓.神笔库.配置 import *
from 神笔码靓.神笔库.通用工具集 import *
from 神笔码靓.神笔库 import 神笔模板
from 神笔码靓.神笔库.定义集 import *


class 手机屏幕神笔模板(神笔模板):
    def 模板ID(self):
        return "手机屏幕"

    def 元素列表(self):
        绘图板 = self.绘图板

        文字字体 = self.获取参数("文字字体", 系统字体.微软雅黑)  # "安卓字体")
        是否显示边缘 = self.获取参数("是否显示边缘", 是)
        是否锁屏 = self.获取参数("是否锁屏", 否)
        是否熄屏 = self.获取参数("是否熄屏", 否)
        锁屏字体颜色 = self.获取参数("锁屏字体颜色", 颜色.白色)

        锁屏时间 = self.获取参数("锁屏时间", None)
        锁屏日期 = self.获取参数("锁屏日期", None)
        锁屏步数 = self.获取参数("锁屏步数", None)

        if 锁屏时间 is None:
            锁屏时间 = "13:14"
        if 锁屏日期 is None:
            锁屏日期 = " 5月20日星期六 四月初二"
        if 锁屏步数 is None:
            锁屏步数 = 52013

        屏幕大小 = self.获取参数("屏幕大小", None)
        屏幕宽, 屏幕高 = 屏幕分辨率.我的手机()

        if 屏幕大小 is None:
            屏幕宽缩放, 屏幕高缩放 = 1, 1
        else:
            屏幕宽_, 屏幕高_ = 屏幕大小
            屏幕宽缩放, 屏幕高缩放 = round(屏幕宽_ / 屏幕宽, 2), round(屏幕高_ / 屏幕高, 2)

        # print("锁屏", 屏幕宽, 屏幕高)
        # 顶端状态栏区域
        元素列表_ = 列表()

        if 是否熄屏:
            圆孔半径大小 = 屏幕宽 / 3.5
            圆孔左边距 = 屏幕宽 / 2 - (圆孔半径大小)
            圆孔上边距 = 屏幕宽 / 2 - (圆孔半径大小)
            圆孔路径点列表 = [
                ("移动", 0, 0), ("水平线", 屏幕宽), ("垂直线", 屏幕高), ("水平线", 0), ("闭合",),
                ("移动", 圆孔左边距, 圆孔上边距), ("垂直线", 圆孔上边距 + 圆孔半径大小 * 2),
                ("水平线", 圆孔上边距 + 圆孔半径大小 * 2), ("垂直线", 圆孔上边距),
                ("闭合",)
            ]
            圆孔路径点列表 = [
                ("移动", 0, 0), ("水平线", 屏幕宽), ("垂直线", 屏幕高), ("水平线", 0), ("闭合",),
                ("移动", 圆孔左边距, 圆孔上边距 + 圆孔半径大小),
                ("椭圆弧线", 圆孔半径大小, 圆孔半径大小, 0, 0, 0, 圆孔左边距 + 圆孔半径大小, 圆孔上边距 + 圆孔半径大小 * 2),
                ("椭圆弧线", 圆孔半径大小, 圆孔半径大小, 0, 0, 0, 圆孔上边距 + 圆孔半径大小 * 2, 圆孔上边距 + 圆孔半径大小),
                ("椭圆弧线", 圆孔半径大小, 圆孔半径大小, 0, 0, 0, 圆孔左边距 + 圆孔半径大小, 圆孔上边距),
                ("椭圆弧线", 圆孔半径大小, 圆孔半径大小, 0, 0, 0, 圆孔左边距, 圆孔上边距 + 圆孔半径大小),
                ("闭合",)
            ]
            绘图板.连线(路径点列表=圆孔路径点列表, 填充颜色=颜色.黑色, 描边宽度=0).添加到列表(元素列表_)

        顶端状态栏 = 绘图板.画矩形(x=0, y=0, 宽=屏幕宽, 高=110, 填充颜色=颜色.黑色, 描边宽度=0)
        元素列表_.添加元素(顶端状态栏)

        屏幕图标集 = [
            ("蓝牙.svg", 785, 40, 1.5),
            ("信号.svg", 826, 40, 1.8),
            ("4g.svg", 873, 35, 1.8),
            ("5g.svg", 925, 35, 1.8),
            ("电池.svg", 976, 22, 3.6),
            ("眼睛.svg", 155, 30, 3.5),
            ("来电.svg", 224, 35, 0.15),
            ("hd.svg", 121, 30, 1.8),
            ("hd.svg", 121, 58, 1.8),
        ]

        if 是否锁屏 and not 是否熄屏:
            锁屏图标集 = [
                ("相机.svg", 屏幕宽 - 147, 屏幕高 - 115, 0.46),
                ("手电筒.svg", 72, 屏幕高 - 120, 0.46),
                ("运动鞋.svg", 467, 605, 0.35),
                ("锁.svg", 507, 127, 0.46),
            ]
        else:
            锁屏图标集 = []

        图标圆半径 = 屏幕宽 / 20

        for SVG图片, x, y, 缩放 in 屏幕图标集:  #
            SVG元素 = 绘图板.导入SVG为组(SVG图片=资源库目录(f"素材/聊天窗口/{SVG图片}"), x=x, y=y).缩放(缩放)
            元素列表_.添加元素(SVG元素)

        for SVG图片, x, y, 缩放 in 锁屏图标集:
            if SVG图片 in ["相机.svg", "手电筒.svg"]:
                绘图板.画圆(x=x + 图标圆半径 / 2, y=y + 图标圆半径 / 2, 半径=图标圆半径, 描边宽度=0,
                       填充颜色=锁屏字体颜色).透明度(0.4).添加到列表(元素列表_)

            SVG元素 = 绘图板.SVG贴图(x=x, y=y,
                              图片文件=资源库目录(f"素材/聊天窗口/{SVG图片}")).颜色替换("#ffffff", 锁屏字体颜色).缩放(缩放)
            元素列表_.添加元素(SVG元素)

        if 是否锁屏 or 是否熄屏:
            if 是否熄屏:
                偏移Y = 屏幕高 / 4
                锁屏字体颜色 = "white"
            else:
                偏移Y = 0
            时间文字 = 绘图板.写字(x=屏幕宽 / 2, y=偏移Y + 屏幕高 / 5.8, 文字=f"{锁屏时间}", 字体大小=260, 字体=文字字体,
                          填充颜色=锁屏字体颜色).添加到列表(元素列表_)
            日期文字 = 绘图板.写字(x=屏幕宽 / 2, y=偏移Y + 屏幕高 / 4.2, 文字=f"{锁屏日期}", 字体大小=45, 字体=文字字体,
                          填充颜色=锁屏字体颜色).添加到列表(元素列表_)
            if not 是否熄屏:
                步数文字 = 绘图板.写字(x=屏幕宽 / 2, y=偏移Y + 屏幕高 / 3.75, 文字=f"{全角空格}{全角空格}{锁屏步数}", 字体大小=35, 字体=文字字体,
                              填充颜色=锁屏字体颜色).添加到列表(元素列表_)

        中国电信文字 = 绘图板.写字(x=75, y=45, 文字=f"中国电信", 字体大小=22, 字体=文字字体, 填充颜色=颜色.白色).添加到列表(元素列表_)
        中国移动文字 = 绘图板.写字(x=75, y=74, 文字=f"中国移动", 字体大小=22, 字体=文字字体, 填充颜色=颜色.白色).添加到列表(元素列表_)

        if 是否显示边缘:
            边缘 = 绘图板.画矩形(x=0, y=0, 宽=屏幕宽, 高=屏幕高, 描边颜色=颜色.黑色, 描边宽度=1).添加到列表(元素列表_)

        if 屏幕大小 is None or (屏幕宽缩放 == 1.0 and 屏幕高缩放 == 1.0):
            return 元素列表_

        缩放元素列表 = 列表()
        元素列表_.创建组合().缩放(屏幕宽缩放, 屏幕高缩放).添加到列表(缩放元素列表)

        return 缩放元素列表


if __name__ == '__main__':
    左右边距 = 50
    上边距 = 180
    下边距 = 80
    描边宽度 = 2
    手机颜色 = "#F2D1FB"

    宽, 高 = 屏幕分辨率.我的手机()
    # 神笔 = 神笔绘图板(作品文件路径="手机锁屏画面.svg", 宽=宽, 高=高)
    神笔 = 神笔绘图板(作品文件路径="手机锁屏画面.svg", 宽=宽 + 左右边距 * 2 + 描边宽度 * 2, 高=高 + 上边距 + 下边距 + 描边宽度 * 2)

    智能手机模板 = 神笔.神笔模板("手机外壳", 左右边距=左右边距, 上边距=上边距, 下边距=下边距, 描边宽度=描边宽度, 手机颜色=手机颜色,
                     屏幕大小=(宽, 高))

    屏幕大小 = 智能手机模板.神笔模板返回值["屏幕大小"]
    屏幕位置 = 智能手机模板.神笔模板返回值["屏幕位置"]

    智能手机 = 智能手机模板.创造元素()

    神笔.神笔模板("手机屏幕", 屏幕大小=屏幕大小, 是否显示边缘=否, 是否锁屏=是).创造元素().平移(*屏幕位置)

    智能手机.置前()

    神笔.完成()
    # https://svgtopng.com/zh/  SVG 转 PNG 滤镜支持
    神笔.生成PNG(生成方式=PNG生成方式.cairosvg, 缩放=3)  # 不支持滤镜
